<?php

namespace App\Http\Controllers\Admin\Categories;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Admin\Categories\Api\CategoriesApi;
use App\Http\Controllers\Common\CommonApi;
use App\Model\Categories;

class CategoriesController extends Controller
{   
    /**
     * 加载分类列表页面
     * @return 分类列表页面
     */
    public function categoryList(Request $request)
    {   
        //获取分类信息
        $data = CategoriesApi::getCategoriesList('all');

        //分页,10个为一页
        $data = CommonApi::CustomPagination($request, $data, 10);

        return view('Admin/Categories/list', [ 'categoriesList' => $data ]);
    }

    /**
     * 加载新增分类页面
     * @return 新增分类页面
     */
    public function categoryAdd()
    {   
    
        return view('Admin/Categories/add');
    }

    /**
     * 执行分类新增操作
     * @param  Request $request
     * @return [array]     执行后的信息
     */
    public function categoryStore(Request $request)
    {   

        //输入数据的验证
        $this->validate($request, [

            'name' => 'bail|required|max:15',
            'description' => 'bail|max:255',
            'sort' => 'bail|nullable|numeric|max:255|min:1',
            'status' => 'bail|required|numeric',

            ], [

            'name.required' => '分类名必须填写',
            'name.max' => '分类名必须少于15个字',
            'description.max' => '分类描述必须少于255个字',
            'sort.max' => '分类排序必须小于255',
            'sort.min' => '分类排序必须大于1',
            'sort.numeric' => '分类排序必须是数字',
            'status.required' => '状态必须填写',
            'status.numeric' => '状态必须是数字',

        ]);

        //执行录入
        $result = CategoriesApi::categoryStore($request);
        
        if ($result['code'] == 200) {
            //录入成功
            return redirect('admin/category-list')->with([

                'tipscode' => $result['code'],
                'tips' => $result['msg'],

            ]);

        } else if ($result['code'] == 400) {
            //录入失败
            return back()->with([

                'tipscode' => $result['code'],
                'tips' => $result['msg'],

            ]);

        }

    }

    /**
     * 加载编辑分类页面
     * @return 编辑分类的页面
     */
    public function categoryEdit($id)
    {   
        $data = CategoriesApi::getCategoriesInfo($id);

        return view('Admin/Categories/edit', ['categoryInfo' => $data]);
    }

    /**
     * 执行分类信息修改
     * @param  Request $request
     * @return [array]      执行后信息
     */
    public function categoryUpdate(Request $request)
    {
        //输入数据的验证
        $this->validate($request, [

            'name' => 'bail|required|max:15',
            'description' => 'bail|max:255',
            'sort' => 'bail|nullable|numeric|max:255|min:1',
            'status' => 'bail|required|numeric',

            ], [

            'name.required' => '分类名必须填写',
            'name.max' => '分类名必须少于15个字',
            'description.max' => '分类描述必须少于255个字',
            'sort.max' => '分类排序必须小于255',
            'sort.min' => '分类排序必须大于1',
            'sort.numeric' => '分类排序必须是数字',
            'status.required' => '状态必须填写',
            'status.numeric' => '状态必须是数字',

        ]);

        //执行分类信息修改
        $result = CategoriesApi::categoryUpdate($request);

        if ($result['code'] == 200) {
            //修改成功
            return redirect('admin/category-list')->with([

                'tipscode' => $result['code'],
                'tips' => $result['msg'],

            ]);

        } else if ($result['code'] == 400) {
            //修改失败
            return back()->with([

                'tipscode' => $result['code'],
                'tips' => $result['msg'],

            ]);

        }

    }

    /**
     * 根据分类ID删除分类
     * @param  [number]  $id      [分类ID]
     * @return [json]           [执行后的信息]
     */
    public function categoryDel($id)
    {   
        
        $result = CategoriesApi::categoryDel($id);
        return $result;
    }





}
